#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <stdlib.h>


int main()
{
    pid_t id = fork();
    if (id == 0)
    {
        //child
        while (1)
        {
            printf("I am child, id:%d, &id:%p\n", id, &id);
            sleep(1);
        }
    }
    else if (id > 0)
    {
        //parent
        while (1)
        {
            printf("I am father, id:%d, &id:%p\n", id, &id);
            sleep(1);
        }
    }

    return 0;
}






//int g_val = 100;
//
//int main()
//{
//    printf("father is running, pid: %d, ppid: %d\n", getpid(), getppid());
//    
//    pid_t id = fork();
//    if(id == 0)
//    {
//        //child
//        int cnt = 0;
//        while(1)
//        {
//            printf("I am child process.pid: %d, ppid: %d, g_val: %d, &g_val: %p\n", getpid(), getppid(), g_val, &g_val);
//            sleep(1);
//            cnt++;
//            if (cnt == 5)
//            {
//                g_val = 300;
//                printf("I am child process.change %d->%d\n", 100, 300);
//
//            }
//        }
//    }
//    else 
//    {
//        //father
//        while(1)
//        {
//            printf("I am father process.pid: %d, ppid: %d, g_val: %d, &g_val: %p\n", getpid(), getppid(), g_val, &g_val);
//            sleep(1);
//        }
//    }
//
//    return 0;
//}
















//int main(int argc, char* argv[], char* env[])
//{
//    char* path = getenv("Hello");
//    if (path == NULL) return 1;
//    printf("path:%s\n", path);
//    //for (int i = 0; env[i]; i++)
//    //{
//    //    printf("env[%d]->%s\n", i, env[i]);
//    //}
//   // extern char **environ;
//   // for (int i = 0; environ[i]; i++)
//   // {
//   //     printf("environ[%d]->%s\n", i, environ[i]);
//   // }
//
//    return 0;
//}






//int g_val = 10000;
//
//int main()
//{
//    printf("I am father process, pid:%d, g_val:%d\n", getpid(), g_val);
//
//    pid_t id = fork();
//    if (id == 0)
//    {
//        while (1)
//        {
//            printf("I am child process, pid:%d, g_val:%d\n", getpid(), g_val);
//            sleep(1);
//        }
//    }
//    else 
//    {
//        while (1)
//        {
//            printf("I am father process, pid:%d, g_val:%d\n", getpid(), g_val);
//            sleep(1);
//        }
//    }
//    
//    return 0;
//}

//int main(int argc, char* argv[])
//{
//    if (argc != 2)
//    {
//        printf("Usage: ./myprocess.c -[a,b,c,d]\n");
//        return 1;
//    }
//    if (strcmp(argv[1], "-a") == 0)
//    {
//        printf("Function 1\n");
//    }
//    else if (strcmp(argv[1], "-c") == 0)
//    {
//        printf("Function 2\n");
//    }
//    else if (strcmp(argv[1], "-c") == 0)
//    {
//        printf("Function 3\n");
//    }
//    else if (strcmp(argv[1], "-d") == 0)
//    {
//        printf("Function 4\n");
//    }
//    else 
//    {
//        printf("no Function!\n");
//    }
////  //  for (int i = 0; argv[i]; ++i)
////  //  {
////  //      printf("argv[%d]->%s\n", i, argv[i]);
////  //  }
////
//////    for (int i = 0; i < argc; ++i)
//////    {
//////        printf("argv[%d]->%s\n", i, argv[i]);
//////    }
////
//////    while (1)
//////    {
//////
//////        printf("I am process, pid:%d\n", getpid());
//////        sleep(1);
//////    }
//////
//    return 0;
//}
